package com.de.annon;

import com.de.enumerate.MybatisEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *  
 *  * @projectName mybatis-demo
 *  * @title     MybatisField   
 *  * @package    com.de.annon  
 *  * @description    作用于对象字段，与mysql数据库之间的映射关系
 *  * @author IT_CREAT     
 *  * @date  2020 2020/5/5 0005 下午 13:27  
 *  * @version V1.0.0 
 *  
 */
@Target(value = {ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MybatisField {
    /**
     * 字段名称，如果要让字段名称映射生效
     */
    String columnName() default "";

    /**
     * 是否是表对应字段，默认 true （是表字段）,如果设置为false则表示忽略，不是表字段
     */
    boolean isTableColumn() default true;

    /**
     * 是否是主键，默认是false,因为一般主键只有一个，也不排除联合主键
     */
    boolean isPrimaryKey() default false;

    /**
     * 忽略属性的值
     * 在where条件中会忽略数据为空的字段作为查询条件
     * 在添加的时候忽略数据为空的字段
     * 在修改时忽略数据为空的字段
     */
    MybatisEnum.FiledIgnoreType ignoreValueType() default MybatisEnum.FiledIgnoreType.NOT_IGNORE;

    /**
     * 默认比较条件
     */
    String defaultCondition() default "=";

    /**
     * 是否是日期格式，如果是日期格式，请指定dateFormat日期格式，比如：yyyy-MM-dd，默认是yyyy-MM-dd HH:mm:ss
     */
    boolean isDate() default false;

    /**
     * 日期格式，默认yyyy-MM-dd HH:mm:ss
     */
    String dateFormat() default "yyyy-MM-dd HH:mm:ss";
}
